Why Use Gray Code For An Optical Shaft Encoder